//获取随机字符串
function randomString(len) {
    len = len || 32;
    var $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
    var maxPos = $chars.length;
    var pwd = '';
    for (i = 0; i < len; i++) {
        pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return pwd;
}

//null转空字符串
function NullToBlank(value){
	if(value==undefined) return "";
	else return value;
}

//检查手机号
function checkMobile(mobile){
    var reg = /^0?1[35789]{1}[0-9]\d{8}$/;
    return reg.test(mobile) ? true : false;
}

//求和
function getSum(data) {
    if(data.length==0) return 0.0;
    return data.reduce(function (a,b) {
        return a+b;
    })
}
/**
 * 获取下一个编码 000001，000001000006，6
 * 得到结果 000001000007
 */
function getNextCode(prefix,maxCode,length){
    if(maxCode==null){
        var str="";
        for(var i=0;i<length-1;i++){
            str+="0";
        }
        return prefix+str+1;
    }else{
        var str="";
        var sno = parseInt(maxCode.substring(prefix.length))+1;
        for(var i=0;i<length-sno.toString().length;i++){
            str+="0";
        }
        return prefix+str+sno;
    }

}

//根据url，参数data初始化table中的数据
function initTable(url,searchDiv,table,pageSize,paging,editIcon,editTitle,deleteIcon,deleteTile){
    editIcon=editIcon||'fa fa-edit';
    deleteIcon=deleteIcon||'fa fa-trash-o';
    editTitle=editTitle||'编辑';
    deleteTile=deleteTile||'删除';
	var object=new Object();
	var getDataBySearchId=function(){
        var param={};
        $(searchDiv).find("input[name],select[name]").each(function(index,value){
            param[$(this).attr("name")]=$(this).val();
        });
        param['size']=pageSize.val();
        return param;
	}
	var changeFunction=function(){
        $(searchDiv).find("input[name],select[name]").change(function(){
            $(paging).find("a.active").removeClass("active");
            search();
		})
        $(searchDiv).find("[data-btn-type='search']").click(function(){
            $(paging).find("a.active").removeClass("active");
            search();
        })
        pageSize.change(function(){
            $(paging).find("a.active").removeClass("active");
            search();
        })
	}

	var selectAll=function () {
        if(table.find("thead tr th input:checkbox").length>0){
            table.find("thead tr th input:checkbox").change(function () {
                if($(this).prop("checked")==true){
                    table.find("tbody input:checkbox").prop("checked",true);
                }else{
                    table.find("tbody input:checkbox").prop("checked",false);
                }
            })
        }
    }

	var search=function(){
		var param=getDataBySearchId();
        AsyncGet(url,param,function(result){
            startPage(paging,result.data,function(page){
                param['page']=page-1;
                AsyncPost(url,param,function(result){
                    var value=result.data;
                    $(table).find("tbody").empty();
                    for(var i=0;i<value.length;i++){
                        var tr="<tr>";
                        $(table).find("thead th").each(function(){
                            if($(this).find("input:checkbox").length>0){
                                tr+="<td><input type='checkbox'></td>";
                            }else if($.trim($(this).attr("name"))==""){
                                tr+="<td>" +
                                    "<a class='"+editIcon+"' title='"+editTitle+"' style='cursor:pointer;'></a>"+
                                    "<a class='"+deleteIcon+"' title='"+deleteTile+"' style='cursor:pointer;'></a>"+
                                    "</td>";
                            }else if($(this).is(":hidden")){
                                tr+="<td style='display:none;'>"+NullToBlank(value[i][$(this).attr("name")])+"</td>";
                            }else{
                                tr+="<td >"+NullToBlank(value[i][$(this).attr("name")])+"</td>";
                            }
                        })
                        tr+="</tr>";
                        $(table).find("tbody").append(tr);
                    }

                })
            },5, ErrMessage);
        })
	}
    search();
    changeFunction();
    selectAll();
    object.search=search;
    return object;
}

/*
*param{
*  entityBox        ,实体窗口--加载页面
*  deleteBox        ,删除窗口--询问意见
*  messageBox       ,消息窗口--提示消息
*  htmlUrl          ,实体的url
*  updateEntityUrl  ,修改实体的url
*  deleteEntityUrl  ,删除的url
*  getEntityUrl     ,获取实体的url
*  getEntityBefore  ,获取实体之前
*  getEntityCallback, 获取实体之后的回调
*  editTitle        ,编辑title
*  table            ,表格
*  addButton        ,添加按钮
*  addCallback,添加界面显示之后的回调
*  addTitle         ,添加title
* }
* callback          ,操作成功的回调函数
**/
function EditEntity(param,callback){
    var $box = param.entityBox||$('#EditEntity');
    if(param.htmlUrl!=null){
        $box.find('.modal-body').load(param.htmlUrl);
    }

    if(param.deleteEntityUrl!=null){
        param.table.on("click","tbody td a:last-child",function(){
            var id=$(this).parents("tr").find("td:first").text();
            DeleteMessage(param.deleteEntityUrl,{id:id},callback,param.deleteBox);
        })
    }else{
        param.table.find("tbody td a:last-child").hide();
    }

    if(param.getEntityUrl!=null){
        param.table.on("click","tbody td a:first-child",function(){
            $box.modal("show");
            $box.find('.modal-title').text(param.editTitle);
            $box.find('[onlyread]').prop("disabled",true);
            $box.find('[updateonlyread]').prop("disabled",true);
            $box.find('[addonlyread]').prop("disabled",false);
            var id=$(this).parents("tr").find("td:first").text();
            initFormData(param.getEntityUrl,{id:id},$box.find(".modal-body form"),param.getEntityCallback,param.getEntityBefore);
        })
    }else{
        param.table.find("tbody td a:first-child").hide();
    }

    if(param.addButton!=null){
        param.addButton.click(function(){
            $box.modal("show");
            $box.find('.modal-title').text(param.addTitle);
            $box.find('[onlyread]').prop("disabled",true);
            $box.find('[updateonlyread]').prop("disabled",false);
            $box.find('[addonlyread]').prop("disabled",true);
            clearFormData($box.find(".modal-body form"));
            param.addCallback();
        })
    }


    if(param.updateEntityUrl!=null){
        $box.find(".modal-footer button:last").show().unbind("click").click(function(){
            if ($box.find(".modal-body form input:file").length > 0) {
                var formData=getFileFormData($box.find(".modal-body form"));
                ajaxPostFile(param.updateEntityUrl, formData, function (value) {
                    if (value.code == 0) {
                        ShowMessage(value.msg, callback, param.messageBox);
                        $box.modal("hide");
                    } else {
                        ErrMessage(value.msg);
                    }
                })
            } else {
                AsyncPost(param.updateEntityUrl, getFormData($box.find(".modal-body form")), function (value) {
                    if (value.code == 0) {
                        ShowMessage(value.msg, callback, param.messageBox);
                        $box.modal("hide");
                    } else {
                        ErrMessage(value.msg, param.messageBox);
                    }
                })
            }
        })
    }else{
        $box.find(".modal-footer button:last").hide();
    }

}

